Herein, a “cache” is a data storage medium with relatively short access times that is used for storing copies of data in a “mass” storage medium with relatively long access times. A system using the data can achieve performance benefits by accessing copies of data from the cache instead of the mass storage medium. In many uses cases, the capacity of the cache is too limited to hold copies of all data required by the system. Accordingly, the performance gain provided by a cache is related to the likelihood that copies of data being accessed are found in the cache. Thus, once a cache is full, some eviction strategy is needed to ensure that the data most likely to be accessed is retained while data least likely to be accessed is evicted to make room for new data. Commonly used strategies evict the “least recently used” (LRU) or the “least frequently used” (LFU) data from the cache.